package com.ps.helpdesk.model;

import java.io.Serializable;
import java.sql.Date;
import javax.persistence.Embeddable;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class Acao implements Serializable {
	@EmbeddedId
	private Acao.PK pk;

	private int horainicio;

	private Date datatermino;

	private String descricao;

	private Date datainicio;

	private int horatermino;

	@ManyToOne
	@JoinColumn(name="IDSITUACAO")
	private Situacao idsituacao;

	private static final long serialVersionUID = 1L;

	public Acao() {
		super();
	}

	public Acao.PK getPk() {
		return this.pk;
	}

	public void setPk(Acao.PK pk) {
		this.pk = pk;
	}

	public int getHorainicio() {
		return this.horainicio;
	}

	public void setHorainicio(int horainicio) {
		this.horainicio = horainicio;
	}

	public Date getDatatermino() {
		return this.datatermino;
	}

	public void setDatatermino(Date datatermino) {
		this.datatermino = datatermino;
	}

	public String getDescricao() {
		return this.descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Date getDatainicio() {
		return this.datainicio;
	}

	public void setDatainicio(Date datainicio) {
		this.datainicio = datainicio;
	}

	public int getHoratermino() {
		return this.horatermino;
	}

	public void setHoratermino(int horatermino) {
		this.horatermino = horatermino;
	}

	public Situacao getIdsituacao() {
		return this.idsituacao;
	}

	public void setIdsituacao(Situacao idsituacao) {
		this.idsituacao = idsituacao;
	}


	@Embeddable
	public static class PK implements Serializable {
		private int idacao;
		private int idtarefa;
		private int idocorrencia;
		private static final long serialVersionUID = 1L;

		public PK() {
			super();
		}

		public int getIdacao() {
			return this.idacao;
		}

		public void setIdacao(int idacao) {
			this.idacao = idacao;
		}

		public int getIdtarefa() {
			return this.idtarefa;
		}

		public void setIdtarefa(int idtarefa) {
			this.idtarefa = idtarefa;
		}

		public int getIdocorrencia() {
			return this.idocorrencia;
		}

		public void setIdocorrencia(int idocorrencia) {
			this.idocorrencia = idocorrencia;
		}

		@Override
		public boolean equals(Object o) {
			if (o == this) {
				return true;
			}
			if ( ! (o instanceof PK)) {
				return false;
			}
			PK other = (PK) o;
			return (this.idacao == other.idacao)
				&& (this.idtarefa == other.idtarefa)
				&& (this.idocorrencia == other.idocorrencia);
		}

		@Override
		public int hashCode() {
			return this.idacao
				^ this.idtarefa
				^ this.idocorrencia;
		}

	}

}
